home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- #
- # Convert per-system configuration in /etc/rpmrc to macros in /etc/rpm/macros.
- #
- # prereq: awk fileutils textutils sh-utils mktemp
- #
-
- RPMRC=$1
- [ -z "$RPMRC" ] && RPMRC=/etc/rpmrc
- MACROS=$2
- [ -z "$MACROS" ] && MACROS=/etc/rpm/macros
- # for testing
- #RPMRC=/tmp/rpmrc
- #MACROS=/tmp/macros
-
- [ -f $RPMRC ] || exit 0
-
- [ -f $MACROS ] && {
- echo "$MACROS already exists" 1>&2
- exit 1
- }
-
- DIRN="`dirname $MACROS`"
- [ -d "$DIRN" ] || mkdir -p "$DIRN"
- [ -d "$DIRN" ] || {
- echo "could not create directory $DIRN" 1>&2
- exit 1
- }
-
- TMP=$(mktemp /tmp/rpmrc.XXXXXX) || {
- echo could not create temp file 1>&2
- exit 1
- }
-
- awk 'BEGIN {
- macros="'"$MACROS"'"
- # direct translation except underscore prepended
- xlate["builddir"] = "_builddir"
- xlate["buildshell"] = "_buildshell"
- xlate["bzip2bin"] = "_bzip2bin"
- xlate["dbpath"] = "_dbpath"
- xlate["defaultdocdir"] = "_defaultdocdir"
- xlate["excludedocs"] = "_excludedocs"
- xlate["ftpport"] = "_ftpport"
- xlate["ftpproxy"] = "_ftpproxy"
- xlate["gzipbin"] = "_gzipbin"
- xlate["instchangelog"] = "_instchangelog"
- xlate["langpatt"] = "_langpatt"
- xlate["netsharedpath"] = "_netsharedpath"
- xlate["pgp_name"] = "_pgp_name"
- xlate["pgp_path"] = "_pgp_path"
- xlate["rpmdir"] = "_rpmdir"
- xlate["rpmfilename"] = "_rpmfilename"
- xlate["signature"] = "_signature"
- xlate["sourcedir"] = "_sourcedir"
- xlate["specdir"] = "_specdir"
- xlate["srcrpmdir"] = "_srcrpmdir"
- xlate["timecheck"] = "_timecheck"
- xlate["tmppath"] = "_tmppath"
- xlate["topdir"] = "_topdir"
-
- # direct translation with no underscore at all
- xlate["buildroot"] = "buildroot"
- xlate["distribution"] = "distribution"
- xlate["packager"] = "packager"
- xlate["vendor"] = "vendor"
-
- # simply remove
- xlate["messagelevel"] = ""
- xlate["require_distribution"] = ""
- xlate["require_icon"] = ""
- xlate["require_vendor"] = ""
- }
-
- {
- for (str in xlate) {
- ms = "^" str ":"
- if (match($1, ms)) {
- if (xlate[str]) {
- sub(ms, "%" xlate[str] " ")
- print >> macros
- }
- # else get ignore and thus get rid of obsolete items
- next
- }
- if (match ($1, "^fixperms:")) {
- sub("^fixperms:", "%_fixperms chmod -R ")
- print >> macros
- next
- }
- }
- print
- next
- }
- ' < $RPMRC > $TMP || {
- echo "could not convert $RPMRC entries to $MACROS entries" 1>&2
- exit 1
- }
- if [ -s $TMP ] ; then
- # don't mess with timestamp unless we have actually changed something
- cat $TMP > $RPMRC && rm -f $TMP
- [ -f $TMP ] && { echo "could not overwrite $RPMRC" 1>&2 ; exit 1 ; }
- fi
- rm -f $TMP
-
- exit 0
-